/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-4-23 上午9:01 Created by dwzhang
 */
package com.jade.framework.base.context;

import java.util.Locale;

/**
 * 程序上下文。
 *
 * @author dwzhang
 * @version 1.0 13-4-23 上午9:01
 */
public interface JadeApplicationContext
{
    /**
     * 根据名称获取对象。
     *
     * @param name 对象名称
     * @return 对象实例
     */
    public <T> T getBean(String name);

    /**
     * 根据名称和类来匹配对象.
     *
     * @param name   对象名称
     * @param tClass 对象类
     * @return 对象实例
     */
    public <T> T getBean(String name, Class<T> tClass);

    /**
     * 根据类来匹配对象.
     *
     * @param tClass 对象类
     * @return 对象实例
     */
    public <T> T getBean(Class<T> tClass);

    /**
     * 判断对象容器中是否包含指定对象。
     *
     * @param name 对象名称
     * @return 如果包含，返回true;否则返回false
     */
    public boolean containsBean(String name);

    /**
     * The basic method used to retrieve a message from the MessageSource. When no message is found
     * for the specified locale, null is returned.
     *
     * @param code resource code
     * @param loc  locale
     * @param args arguments
     * @return matched message
     */
    public String getMessage(String code, Locale loc, Object... args);
}
